gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\stprtool\svm\minball.m

    function [Alpha, R, mi2] = minball(data,ker, arg)
% MINBALL computes minimal ball around data. 
% [Alpha, R, mi2 ] = minball(data,ker, arg)
%
% It computes a center and a radius of minimal ball
% around data in a feature space induced by a given kernel.
% The problem leads to a QP problem which is solve by 
% MATLAB Optimization toolbox.
% 
% Inputs:
%  data [dim x num_data] input data.
%  ker [string] kernel identifier; see help 'kernel'
%  arg [...] rernel argument.
%
% Outputs:
%  Alpha [num_data x 1] center of ball mi = data*Alpha' in 
%    non-linear space;
%  R [real] radius of the ball in non-linear space.
%  mi2 [real]  mi2=mi'*mi in non-linear space.
%
% See also:
%  KDIST.
%

% Modified:
%  15-jun-20002, VF

[dim,num_data] = size(data);

K = kmatrix( data, ker, arg );

f = -diag(K);

H=2*K;

Aeq = ones(1,num_data);
beq = 1;

LB = zeros(num_data,1);
UB = inf*ones(num_data,1);

options=optimset('Display','off'); 
Alpha=quadprog(H,f,[],[],Aeq,beq,LB,UB,zeros(num_data,1),options);

mi2=Alpha'*K*Alpha;

inx= find(Alpha > 1e-12);
R=0;
for i=inx(:)',
  R=R+ sqrt(K(i,i) -2*K(i,:)*Alpha + mi2 );
end

R=R/length(inx);

return;